package org.anyin.gitee.shiro.extension;

public interface IExtensionHandlerFactory {
    /**
     * 添加扩展处理器
     * @param extensionHandler 处理器
     * @param <Y> 扩展点
     */
    <Y extends Enum<Y>>void addExtensionHandler(IExtensionHandler<Y> extensionHandler);

    /**
     * 获取扩展点处理器
     * @param extension 扩展点
     * @param type 处理器类型
     * @param <T> 扩展处理器
     * @param <Y> 扩展点
     */
    <T extends IExtensionHandler<Y>,Y extends Enum<Y>> T getExtensionHandler(Y extension, Class<T> type);
}
